package logica.util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Util {

    public static String resaltarKeywords(String texto, List<String> keywords) {
        String startTag = "<span style=\"background-color: #FFFF00\">";
        String endTag = "</span>";
        for (String keyword : keywords) {
            if (!keyword.equals("")) {
                StringBuilder hResult = new StringBuilder(startTag);
                hResult.append(keyword);
                hResult.append(endTag);
                texto = texto.replace(keyword, hResult.toString());
            }
        }
        return texto;
    }

    public static String resaltarKeywordsPrueba(String texto, List<String> keywords) {
        String startTag = "<span style=\"background-color: #FFFF00\">";
        String endTag = "</span>";

        List<String> nuevaListaKeywords = new ArrayList<String>();

        for (String keyword : keywords) {
            if (!keyword.equals("")) {
                Matcher matcherKeyword = obtenerMatcherCaseInsensitive(keyword, texto);
                while (matcherKeyword.find()) {
                    nuevaListaKeywords.add(matcherKeyword.group());
                }
            }
        }

        String textoNuevo = "";
        String textoCorto = "";
        int cortarHasta = 0;
        int renglones = 0;
		
        for (String string : nuevaListaKeywords) {
            if (!string.equals("")) {
                if (texto.split(string) != null && (texto.split(string)).length >= 2) {
                    int indPal = texto.indexOf(string);
                    
					if (indPal - 10 > 0) {
                        textoNuevo = texto.substring(indPal - 10, texto.length());
                    } else {
                        textoNuevo = texto.substring(indPal, texto.length());
                    }
                    //textoNuevo = texto.split(string, 2)[1];
                    if (textoNuevo.length() - 1 >= 100) {
                        cortarHasta = 100;
                    } else {
                        cortarHasta = textoNuevo.length();
                    }
					//textoCorto = textoCorto + "..." + string + textoNuevo.substring(0, cortarHasta) + "...<br>";
                    textoCorto = textoCorto + "..." + textoNuevo.substring(0, cortarHasta) + "...<br>";
                    int cortarDesde =  textoNuevo.substring(0, cortarHasta).length() - 1;

                    if (cortarDesde < textoNuevo.length() - 1) {
                        texto = textoNuevo.substring(cortarDesde, textoNuevo.length() - 1);
                    } else {
                        texto = textoNuevo;
                    }

                    renglones++;

                    if (renglones > 5) {
                        break;
                    }
                }
            }
        }

        if(textoCorto.length() == 0 ){
            textoCorto = texto.substring(0, texto.length() < 400? texto.length(): 400);
        }

        for (String keyword : nuevaListaKeywords) {
            if (!keyword.equals("")) {
                StringBuilder hResult = new StringBuilder(startTag);
                hResult.append(keyword);
                hResult.append(endTag);
                textoCorto = textoCorto.replace(keyword, hResult.toString());
            }
        }
        //System.out.println(textoCorto);
        return textoCorto;
    }

    private static Matcher obtenerMatcherCaseInsensitive(String er, String cadena) {
        Pattern regex = Pattern.compile(er, Pattern.CASE_INSENSITIVE);
        Matcher regexMatcher = regex.matcher(cadena);
        return regexMatcher;
    }
}
